home *** CD-ROM | disk | FTP | other *** search
/ LG Super CD / LG Super CD.iso / vx6000 / pure voice / test.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2000-12-04  |  1.6 KB  |  70 lines

  1. // An example program that converts an existing test.wav (8-kHz, 16-bit PCM)
  2. // to test.qcp file.
  3. // must define INITGUID before including Qpl.h 
  4. // only define once in a project
  5. #define INITGUID 
  6.  
  7. #include <windows.h> 
  8. #include <stdio.h>
  9.  
  10. #include "Qpl.h"
  11.  
  12. typedef HRESULT (WINAPI *pfnQPLCreateInstance)(REFCLSID, REFIID, void**);
  13.  
  14. const unsigned char WaveFileName[] = "test.wav";
  15. const unsigned char QcpFileName[] = "test.qcp";
  16.  
  17. void main( int argc, char *argv[] )
  18. {
  19.     pfnQPLCreateInstance pfn;
  20.     IQPLConvertFile1 *pCf = 0;
  21.     IQPLQcpFile1 *pQf = 0;
  22.  
  23.     HINSTANCE hDll = LoadLibrary( "Qpl.dll" );
  24.  
  25.     if ( hDll == NULL )
  26.     {
  27.         printf("Can't find Qpl.dll\n");
  28.         return;
  29.     }
  30.     
  31.     pfn = (pfnQPLCreateInstance) GetProcAddress(hDll, "QPLCreateInstance");
  32.  
  33.     if ( pfn == 0 )
  34.     {
  35.         printf("Can't get QPLCreateInstance\n");
  36.         return;
  37.     }
  38.  
  39.     if ( S_OK != pfn( CLSID_QPLPvQcpFile1, IID_IQPLConvertFile1, (void**)&pCf ) )
  40.     {
  41.         printf("Can't find IQPLConvertFile\n");
  42.         return;
  43.     }
  44.  
  45.     if ( S_OK != pfn( CLSID_QPLPvQcpFile1, IID_IQPLQcpFile1, (void**)&pQf ) )
  46.     {
  47.         printf("Can't find IQPLQcpFile\n");
  48.         return;
  49.     }
  50.     
  51.     printf( "Converting %s to %s\n", WaveFileName, QcpFileName );
  52.     // use encoding level of half fixed rate (gives us 6800 bps)
  53.     if ( pCf->ConvertFile( WaveFileName, QcpFileName, QPL_ENCODE | QPL_QCELP_HALF_FIXED) )
  54.     {
  55.         printf("Conversion failed!\n");
  56.         return;
  57.     }
  58.  
  59.     if ( pQf->Open( QcpFileName, QPL_READ ) )
  60.     {
  61.         UINT32 len = pQf->GetLength() * pQf->GetBlockSize(); 
  62.         printf("Converted %s is %d ms long\n", QcpFileName, len);
  63.         pQf->Close();    
  64.     }
  65.  
  66.     pQf->Release();
  67.     pCf->Release();
  68.     FreeLibrary(hDll);
  69. }
  70.